package 真题;/**
 * @author： li
 * @date： 2022-02-06 16:11
 * @version 1.0
 */

/*问题描述
对于一个字符串S,我们定义S的分值f(S)为S中出现的不同的字符个数。例如 "aba"，"abc", "aaa"。
现在给定一个字符串S[0..n-1]（长度为n），请你计算对于所有S的非空子串S[i..j](0<=i<=j<n),f(S[i..j])的和是多少。
输入格式
输入一行包含一个由小写字母组成的字符串 。
输出格式
输出一个整数表示答案。
样例输入
ababc
样例输出
28
样例说明
子串  f值
a     1
ab    2
aba   2
abab  2
ababc 3
 b    1
 ba   2
 bab  2
 babc 3
  a   1
  ab  2
  abc 3
   b  1
   bc 2
    c 1
评测用例规模与约定
对于20%的评测用例，1≤n ≤10;
对于40%的评测用例，1≤ n ≤100;
对于50%的评测用例，1≤n ≤1000;
对于60%的评测用例，1≤n ≤10000;
对于所有评测用例，1≤n ≤100000。

 */
import java.util.HashSet;
import java.util.Scanner;
public class 子串分值和_60 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        String s;
        HashSet<Character> hashSet = new HashSet<>();
        s=sc.next();
        int n=s.length();
        long count=0;
        for(int i=0;i<n;i++){
            hashSet.add(s.charAt(i));
            count=count+1;
            for(int j=i+1;j<n;j++){
                hashSet.add(s.charAt(j));
                count=count+hashSet.size();
            }
            hashSet.clear();
        }
        System.out.println(count);
    }
}
